package com.mhy.netsafe.utils.picture;

import com.mhy.netsafe.MyApplication;
import com.mhy.netsafe.db.SportInfoDao;
import com.mhy.netsafe.db.UserInfoDao;

import java.util.List;

/**
 * 项目名 NetSafe
 * 所在包 com.mhy.netsafe.utils.picture
 * 作者 mahongyin
 * 时间 2019/8/12 23:25
 * 邮箱 mhy.work@qq.com
 * 描述 说明:多表关联的增删改查（我已封装成了方法方便使用）
 */
/*
* （1）@Entity 实体标识
     @nameInDb 在数据库中的名字，如不写则为实体中类名
     @indexes 索引
     @createInDb 是否创建表，默认为true,false时不创建
     @schema 指定架构名称为实体
     @active 无论是更新生成都刷新
（2）@Id 每条数据对应的位置，必写项
（3）@Property(nameInDb = "") 表示该属性将作为表的一个字段,其中nameInDb属性值是在数据库中对应的字段名称,可以自定义字段名,例如可以定一个跟实体对象字段不一样的字段名
（4）@NotNull 不为null
（5）@Unique 唯一约束   该属性值必须在数据库中是唯一值
（6）@ToMany 一对多
（7）@OrderBy 排序
（8）@ToOne 一对一 关系表
（9）@Transient 不保存于数据库
（10）@generated 由greendao产生的构造函数或方法
*/
public class DataBaseTool {

    private static SportInfoDao mSportInfoDao = MyApplication.getInstance().getmDaoSession().getSportInfoDao();
    private static UserInfoDao mUserInfoDao = MyApplication.getInstance().getmDaoSession().getUserInfoDao();
    /**
     * 增加运动信息
     */
public static long insertSportInfo(UserInfo userInfo,SportInfo sportInfo)
        {
        sportInfo.setUserId(userInfo.getId());//增加运动表时要指定其父表（用户表id和用户表）
        sportInfo.setUserInfo(userInfo);
        return mSportInfoDao.insertOrReplace(sportInfo);
        }
/**
 * 增加用户信息
 */
public static long insertUserInfo(UserInfo info)
        {
        return mUserInfoDao.insertOrReplace(info);
        }

/**
 * 查运动信息
 */
public static List<SportInfo> SearchSportInfo(UserInfo userInfo)
        {
        return userInfo.getSportInfo();//查找运动表则需要通过用户表来获取运动表的集合然后再遍历找到所需运动表
        }

/**
 * 查用户信息
 */
public static List<UserInfo> SearchUserInfo()
        {
        //惰性加载
        List<UserInfo> list=mUserInfoDao.queryBuilder().listLazy();
        return list;
        }

/**
 * 删除某条用户信息
 *
 * @param i 删除数据的id
 */
public static void deleteUserInfo(long i)
        {
        mUserInfoDao.deleteByKey(i);
        //当然Greendao还提供了其他的删除方法，只是传值不同而已
        }

/**
 *修改某条运动信息
 */
public static void correctSportInfo(SportInfo info)
        {
        mSportInfoDao.update(info);
        }

/**
 *修改某条用户信息
 */
public static void correctUserInfo(UserInfo info)
        {
        mUserInfoDao.update(info);
        }
        }
